package grafo;

public class Grupo {
	private Grupo padre;
	private boolean hijos;
	private int profundidad;
	
	public Grupo(){
		padre = this;
		hijos = false;
		profundidad = 1;
	}
	
	public Grupo dameGrupo(){
		if(padre!=this)
			return padre=padre.dameGrupo();
		return this;
	}
	
	public void union(Grupo g){
		if(this.padre!=this)
			this.padre.union(g);
		if(g.padre!=g)
			this.padre.union(g.padre);
		if(this.profundidad>=g.profundidad){
			g.padre = this;
			if(!this.hijos){
				profundidad++;
				hijos=true;
			}
		}else
			this.padre = g;
	}
}
